﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Csla;
using log4net;

namespace Sireass.Bl
{
	[Serializable]
	public class ActividadAsignacionCriteria : CriteriaBase<ActividadAsignacionCriteria>
	{
		#region Properties
		public static readonly PropertyInfo<long?> IdActividadProperty = RegisterProperty<long?>(c => c.IdActividad);
		public long? IdActividad
		{
			get { return ReadProperty(IdActividadProperty); }
			private set { LoadProperty(IdActividadProperty, value); }
		}
		public static readonly PropertyInfo<long?> IdAsignacionProperty = RegisterProperty<long?>(c => c.IdAsignacion);
		public long? IdAsignacion
		{
			get { return ReadProperty(IdAsignacionProperty); }
			private set { LoadProperty(IdAsignacionProperty, value); }
		}
		public static readonly PropertyInfo<DateTime?> FechaInicioActividadProperty = RegisterProperty<DateTime?>(c => c.FechaInicioActividad);
		public DateTime? FechaInicioActividad
		{
			get { return ReadProperty(FechaInicioActividadProperty); }
			private set { LoadProperty(FechaInicioActividadProperty, value); }
		}
		public static readonly PropertyInfo<DateTime?> FechaFinActividadProperty = RegisterProperty<DateTime?>(c => c.FechaFinActividad);
		public DateTime? FechaFinActividad
		{
			get { return ReadProperty(FechaFinActividadProperty); }
			private set { LoadProperty(FechaFinActividadProperty, value); }
		}
		public static readonly PropertyInfo<string> DescripcionProperty = RegisterProperty<string>(c => c.Descripcion);
		public string Descripcion
		{
			get { return ReadProperty(DescripcionProperty); }
			private set { LoadProperty(DescripcionProperty, value); }
		}
		public static readonly PropertyInfo<short?> HorasAplicadasProperty = RegisterProperty<short?>(c => c.HorasAplicadas);
		public short? HorasAplicadas
		{
			get { return ReadProperty(HorasAplicadasProperty); }
			private set { LoadProperty(HorasAplicadasProperty, value); }
		}		
		public static readonly PropertyInfo<bool?> HabilitadoProperty = RegisterProperty<bool?>(c => c.Habilitado);
		public bool? Habilitado
		{
			get { return ReadProperty(HabilitadoProperty); }
			private set { LoadProperty(HabilitadoProperty, value); }
		}
		public static readonly PropertyInfo<DateTime?> FechaAltaProperty = RegisterProperty<DateTime?>(c => c.FechaAlta);
		public DateTime? FechaAlta
		{
			get { return ReadProperty(FechaAltaProperty); }
			private set { LoadProperty(FechaAltaProperty, value); }
		}
		public static readonly PropertyInfo<DateTime?> FechaBajaProperty = RegisterProperty<DateTime?>(c => c.FechaBaja);
		public DateTime? FechaBaja
		{
			get { return ReadProperty(FechaBajaProperty); }
			private set { LoadProperty(FechaBajaProperty, value); }
		}
		#endregion

		#region Factory
		public ActividadAsignacionCriteria(long? idActividad, long? idAsignacion, DateTime? fechaInicioActividad, DateTime? fechaFinActividad, 
											string descripcion, short? horasAplicadas, bool? habilitado, DateTime? fechaAlta, DateTime? fechaBaja)
		{
			IdActividad = idActividad;
			IdAsignacion = idAsignacion;
			FechaInicioActividad = fechaInicioActividad;
			FechaFinActividad = fechaFinActividad;
			Descripcion = descripcion;
			HorasAplicadas = horasAplicadas;
			Habilitado = habilitado;
			FechaAlta = fechaAlta;
			FechaBaja = fechaBaja;
		}
		#endregion
	}
}
